Приложение 5. Обработка ошибок
При формировании текста сообщения об ошибке используется следующий алгоритм:
● Из цепочки возникших исключений извлекается самое вложенное исключение (т. е. самое первое исключение).
● Текст описания самого первого исключения используется для краткого представления ошибки:
● При этом для ошибок компиляции модулей в краткое представление включен текст, связанный с местоположением возникновения ошибки (строка в модуле).
● Для краткого представления ошибок времени выполнения используется текст без подробностей возникновения ошибки (строки в модуле).
● Краткое представление ошибки отображается в диалоге, отображаемом пользователю. В этом диалоге возможно наличие кнопки Подробно…, если выполняются следующие условия:
● включен режим отладки,
● ошибка встроенного языка,
● наличие более одного исключения в цепочке.
● Подробное представление ошибки формируется из описаний всех исключений цепочки.
Если диалог с ошибкой не содержит кнопку Подробно… и ошибка является критической (работа программы не может быть продолжена), то в этом диалоге будет находиться гиперссылка Показать информацию для технической поддержки.
При нажатии кнопки Подробно… будет открыто дополнительное окно, в котором будет содержаться подробное представление ошибки и дополнительная кнопка Конфигуратор…, если в диалоге отображается ошибка встроенного языка.
Во время работы тонкого клиента или веб-клиента в клиент-серверном варианте работы обрабатываются следующие ошибочные ситуации:
● Если при начале работы системы обнаружена установленная блокировка соединений с информационной базой, то отображается сообщение об ошибке с возможностью повтора соединения.
● В случае несовпадения версии сервера и клиентского приложения отображается сообщение об ошибке с возможностью выполнить перезапуск.
● При отсутствии прав на запуск тонкого клиента поведение зависит от использования ключа запуска –AppAutoCheckMode:
● Если ключ был указан при запуске, производится автоматическая попытка запуска толстого клиента.
● Если ключ не был указан при запуске, отображается окно с сообщением об ошибке (без возможности перезапуска).
● При невозможности соединения с сервером «1С:Предприятия» (или веб-сервером) для запросов, допускающих повторную отправку, и для запросов, выполняемых до начала сеанса, отображается сообщение об ошибке с возможностью повторить запрос или отказаться от попытки. При отказе от повторения запроса «1С:Предприятие» не завершает свою работу. Если же запрос не допускает повторной отправки, отображается окно с сообщением об ошибке и возможность выполнить перезапуск.
● Если ошибка произошла в процессе обработки запроса на сервере, отображается окно с сообщением об ошибке и возможность выполнить перезапуск.
● При ошибке работы с сеансом (например, сеанс был удален администратором) отображается окно с сообщением об ошибке, и предоставляется возможность выполнить перезапуск.
При возникновении внутренней ошибки платформы веб-клиент формирует ошибку вида: Неизвестная ошибка: <описание ошибки>.
Если для подключения к информационной базе используется веб-клиент или тонкий клиент, подключенный через веб-сервер, то при возникновении нештатных ситуаций используются следующие коды ошибок:
● 400 Bad Request – описывает ошибки прикладного решения, которые не имеют критических последствий для работы клиентского приложения (включая все исключения времени выполнения). Нельзя перехватывать для отображения пользователю.
● 500 Internal Server Error – описывает ошибки прикладного решения, имеющие критические последствия для клиентского приложения, например:
● исключения базы данных, являющиеся невосстановимыми;
● исключения, связанные с удалением сеанса или отсутствием данных сеанса.
● 502 Bad gateway – описывает ошибки кластера серверов или регламентных операций, имеющие критические последствия для приложения, например, если невозможно установить соединение с сервером «1С:Предприятия».
● 503 Service Unavailable – описывает ошибки кластера серверов или регламентных операций, имеющие критические последствия для клиентского приложения, например, невозможно установить соединение с сервером СУБД.
Внимание! Для сохранения работоспособности системы, не следует перехватывать ошибки с кодом 400. Ошибки с кодами 50x можно перехватывать для отображения более дружественного сообщения об ошибке.